package com.zjlab.sandtable;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.zjlab.sandtable.bean.MfLogsInfo;
import com.zjlab.sandtable.utils.RemoteCall;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;

/**
 * @author xue
 * @create 2022-11-07 17:00
 */
@Component
public class MfProcessor {

    /**
     * 1： 正在数据采集……；
     * 2.：采集完成，正在上传数据……；
     * 3： 上传成功；
     * 4： 上传失败。；
     * 5：开始巡检……
     */
    private final static Map<String, String> LOGS_MAP = new HashMap<String, String>() {{
        put("正在数据采集……", "巡检小车正在数据采集……");
        put("采集完成，正在上传数据……", "数据采集完成，巡检小车正在上传数据……");
        put("上传失败。", "传输效果不佳");
    }};

    private final AtomicReference<MfLogsInfo> logAtomic = new AtomicReference<>(null);


    public void mfSwitch(Boolean input) {
        if (input) {
            logAtomic.set(new MfLogsInfo());
        } else {
            logAtomic.set(null);
        }
    }


    public void receiveMfLogsInfo(MfLogsInfo msg) {
        MfLogsInfo beforeMfLogsInfo = logAtomic.get();
        if (ObjectUtil.isNotNull(beforeMfLogsInfo) && !msg.equals(beforeMfLogsInfo)) {
            logAtomic.set(msg);
            RemoteCall.postRestful(
                    "/api/Mf/Logs",
                    JSONUtil.createObj().set("log", LOGS_MAP.getOrDefault(msg.getStatus(), msg.getStatus())),
                    500
            );
        }
    }


}
